<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: 评审</title>
<meta name="uma.type" content="Guideline">
<meta name="uma.name" content="reviews">
<meta name="uma.presentationName" content="评审">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="2.981757544469536E-306"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Guideline: 评审</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/guidance.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">评审是一个正式的过程，工作产品通过此过程呈给有关的各方以征求意见和获取批准。本指南说明如何准备和进行评审。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/tasks/assess_iteration_342C29D1.html" guid="{DBD235AB-EEEF-4C9E-A83E-5B87DAD70E33}">评估迭代</a>
</li>
<li>
<a href="./../../../rup/workproducts/rup_review_record_CA816ECE.html" guid="{4047B5B0-5FB7-4960-8A7E-451719D85DFF}">评审记录</a>
</li>
<li>
<a href="./../../../rup/tasks/conduct_review_1D8A70F8.html" guid="{01C0BC09-C421-438A-B4C4-351C46A244C9}">执行评审</a>
</li>
<li>
<a href="./../../../rup/tasks/organize_review_3DD2D5E0.html" guid="{F080799F-6A5B-40B9-ACB1-654A7741CADD}">组织评审</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a> 
<h3>
    <a id="General" name="General">概要</a>
</h3>
<ul>
    <li>
        虽然与会者可能自行准备了一些评审，但评审是以会议形式进行的。
    </li>
    <li>
        在执行流程任务期间不断地监测质量，以防止直到评审才发现隐藏了大量的缺陷。在 Neusoft Unified Process 的每个任务中，参考下面列出的核对表以加强监测；在非正式的评审会议或日常工作中使用检查点。
    </li>
</ul>
<h3>
    <a id="TypesOfReviews" name="TypesOfReviews">评审的类型</a>
</h3>
<p>
    在 1990 的标准词汇表中，IEEE 定义了三种评审：
</p>
<blockquote>
    <dl>
        <dt>
            <b><i>评审</i></b>
        </dt>
        <dd>
            一种正式会议，在会议上向用户、客户或其他相关各方介绍一个或一组工作产品，以征求对方的意见和批准。
        </dd>
        <dt>
            <b><i>检查</i></b>
        </dt>
        <dd>
            一种正式的评估技术，将由非制作者本人的个人或小组详细检查工作产品，以检测是否有错误、是否违反开发标准以及是否存在其他问题。
        </dd>
        <dt>
            <b><i>走查</i></b>
        </dt>
        <dd>
            一个评审过程，由某个开发人员领导一个或多个开发团队成员对他（或她）所编写的一段工作产品进行检查；同时，由其他成员就技术、风格、可能的错误、是否违反开发标准和其他问题提问并给出意见。
        </dd>
    </dl>
</blockquote>
<p>
    跨团队进行实现后，评审还提供了发现其他小组的设计和代码的机会，并且增加检测公共源代码的机会、复用的机会以及泛化关系的机会。评审还提供协调各种组之间的架构风格的方法。
</p>
<p>
    在 NUP 中，评审在确保质量方面发挥了重要的辅助作用。在 NUP 中，确保质量的主要因素在有关“同事检查”的部分 [<a class="elementLinkWithUserText" href="./../../../rup/customcategories/references_56F06DFD.html#ROY98" guid="7.755968586980351E-308">ROY98</a>]
    中进行了详细说明。然而，此书的确指出了评审在专业开发方面其他有价值的影响：资历较低的工作人员有机会了解专家的工作，并让资深导师对自己的工作进行评审。
</p>
<h3>
    <a id="Planning" name="Planning">计划</a>
</h3>
<p>
    我们对评审制定计划，以确定评审的重点和范围，并确保所有参与者了解自己的角色和评审的目标。
</p>
<p>
    在评审之前，通过确定将提出的问题来定义评审范围；确定评估的对象及原因。针对可能提出的各种问题，参阅要评审工作产品的核对表。确切的问题将取决于项目所处的阶段：早期评审将关心较广泛的架构问题，而后期评审将更为具体。
</p>
<p>
    确定了评审范围之后，便可以确定评审参与者、议程和进行评审所需的信息。选择参与者时，应该在软件架构专业知识和领域专业知识之间建立平衡。清楚明确地指定将协调评审的评估负责人。如果有必要，调用其他团队或组织的其他部分来提供领域专业知识或技术专业知识。
</p>
<p>
    评审员的数目应该大约为七个人或更少。如果选择得当，他们应该完全可以确定架构方面的问题。如果评审员的数量太多，实际上会因为会议时间过长、参与更困难，以及在评审过程中增加了枝节问题和讨论，而降低评审的质量。如果评审员少于四个，则会因为减少了问题的多样性而增加片面性的风险。
</p>
<p>
    评审员应该在要评审的领域拥有丰富经验；对于用例，评审员应该了解问题领域；对于软件架构，评审员还需要具备软件设计技术的知识。缺乏经验的评审员可以通过参与评审来了解有关架构的内容，但他们对评审的帮助很小，同时他们的参与还可能会分散评审力量。保持小规模的评审小组；参与者不超过
    7 个，但不少于 3 个。评审员数量太少会危及评审的质量，评审员数量太多，就无法进行对于获得质量结果非常重要的交互式讨论。
</p>
<p>
    选择符合以下条件的评审员：
</p>
<ul>
    <li>
        具有相当的背景来理解所介绍的材料
    </li>
    <li>
        所评审产品或工作产品的质量与之有利害关系
    </li>
</ul>
<h3>
    <a id="PrepareReview" name="PrepareReview">准备</a>
</h3>
<p>
    评审之前，应该收集要评审的工作产品和所有背景材料，并分发给评审参与者。对于评审材料并收集问题的评审员来说，这些工作必须在评审会议之前很好地完成。预先分发足够的评审材料，让评审员有时间准备评审，可以显著提高评审结果的质量。准备评审还会大大提高评审的效率和有效性。
</p>
<p>
    评审员应该<b>在评审之前</b>研究文档、构思问题并确定要讨论的问题。在评审员的工作量正常的情况下，准备评审所需的最少时间通常是几个工作日。
</p>
<h3>
    <a id="ConductReview" name="ConductReview">进行评审</a>
</h3>
<p>
    进行成功的评审有几个关键要素：
</p>
<ul>
    <li>
        <a href="#UnderstandReviewProcess">了解评审流程</a>
    </li>
    <li>
        <a href="#UnderstandReviewerRoles">确保评审员了解自己的角色</a>
    </li>
    <li>
        <a href="#Moderator">指定协调人</a>
    </li>
    <li>
        <a href="#KeepReviewMeetingsBrief">使评审保持简短，严格按照议程进行</a>
    </li>
    <li>
        <a href="#IdentifyIssuesDontFixProblems">确定问题，而不要解决问题</a>
    </li>
</ul>
<p>
    以下将详细讨论每一条。
</p>
<h4>
    <a id="UnderstandReviewProcess" name="UnderstandReviewProcess">了解评审流程</a> <a href="#ConductReview"><img height="20"     alt="为了进行评审" src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h4>
<p>
    一般来说，评审流程是一个重复进行的循环过程：
</p>
<ul>
    <li>
        评审员提出问题
    </li>
    <li>
        讨论问题，同时可能确定问题
    </li>
    <li>
        确定缺陷（确定需要解决的问题）
    </li>
    <li>
        直到不再有要确定的问题时再继续下一步
    </li>
</ul>
<p>
    为了使这个过程有效进行，每个人都必须理解评审的目标是提高评审的工作产品的质量。应该以发现问题的挑剔眼光来评审工作产品。这种做法可能很困难，所以所有评审员都必须经常提醒自己将重点放在确定问题上（我们天生就会解决问题，但作为评审员我们必须将这个工作放在一边）。
</p>
<p>
    我们都强烈地感觉到工作是属于自己的；通常，我们很难接受批评，甚至是建设性的批评。因为这样，我们必须更加努力地工作，以便将注意力集中在评审目标上：使工作产品的质量更好。
</p>
<h4>
    <a id="UnderstandReviewerRoles" name="UnderstandReviewerRoles">了解评审员角色</a> <a href="#ConductReview"><img height="20"     alt="为了进行评审" src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h4>
<p>
    为了进行有效的评审，每个人都必须扮演一个角色。更具体地说，必须扮演某些角色，而且评审员不能轻易地转变角色。评审中的基本角色有：
</p>
<ul>
    <li>
        协调人
    </li>
    <li>
        记录员
    </li>
    <li>
        介绍员
    </li>
    <li>
        评审员
    </li>
</ul>
<p>
    协调人确保评审按议程进行，并以当前的主题为重点。协调人应该确保对枝节问题的讨论不会使评审脱离正轨，而且所有评审员都以平等的身份参加讨论。
</p>
<p>
    记录员经常被忽略，但却是评审团队中必不可少的部分。其专职任务是记录所讨论的内容和要采取的行动。将此任务分配给某个评审员，实质上是使其置身于讨论之外。然而，更糟的是，如果没有记录下所决定的事情，就很可能会导致将来再次发生该问题。确保指定一位记录员，并保证这是此人所扮演的唯一角色。
</p>
<p>
    介绍员是要评审的工作产品的作者。介绍员说明工作产品和理解工作产品所需的所有背景信息（但如果工作产品不是无需解释的，可能需要做一些工作）。重要的是，评审不能变成“审讯”，因为评审的重点应该是工作产品，而不是介绍员。协调人的作用是确保与会者（包括介绍员）记住这一点。讨论开始，介绍员首先发言，回答问题并提供解释说明。
</p>
<p>
    评审员提出问题。一定要侧重于提出问题，而不要耗费大量精力讨论如何解决问题。注重结果，而不是方法。
</p>
<h4>
    <a id="Moderator" name="Moderator">指定协调人</a> <a href="#ConductReview"><img height="20" alt="为了进行评审"     src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h4>
<p>
    正如上面所讨论的，协调人对于保持评审不偏离重点起到了关键的作用。有一点很重要，协调人的工作重点是使评审不脱离正轨；他不应该具有评审员的职责。协调人的作用是引发讨论，确保大家平等地参与会议，并缓和争论的气氛。这是一个专职的任务。如果不能有效地协调，评审就无法达成预期的结论，而且也无法实现他们的目标。
</p>
<h4>
    <a id="KeepReviewMeetingsBrief" name="KeepReviewMeetingsBrief">使评审会议保持简短</a> <a href="#ConductReview"><img height="20"     alt="为了进行评审" src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h4>
<p>
    简短而侧重于明确目标的评审是最有效的。因为很难长期保持重点，而且评审员还有其他的工作要做，应该将评审时间限制在两小时之内。如果要进行时间较长的评审，可以将其拆分为几次规模较小、更有重点的评审。如果评审员能保持重点，就会获得更好的结果。
</p>
<p>
    这种作法的关键是制定非常确定的议程和清楚明确的目标。分发评审材料后，应该向大家传达这些目标，而且评审会议开始时，协调人应该强调这些目标。之后，在会议进行期间，协调人还必须经常（有时是强迫性的）强调这些目标。
</p>
<h4>
    <a id="IdentifyIssuesDontFixProblems" name="IdentifyIssuesDontFixProblems">确定问题，而不要解决问题</a> <a href="#ConductReview"><img height="20" alt="为了进行评审" src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h4>
<p>
    评审会议无法实现预期结果的一个主要原因是，会议很容易变成关于应该如何解决问题的讨论。解决问题通常需要调查和仔细思考；评审的形式对于这种讨论来说不是一个有效的方法。确定了问题之后，确定该缺陷是否必须得到解决，之后将调查和解决的任务分配给某个人。评审会议应该只注重确定问题。
</p>
<p>
    如果问题需要一组人作进一步的讨论，就另外召开一次单独的会议重点讨论该主题。通常，这种会议需要一些调查和准备工作，而且需要一些具备适当工作技能的人员参加。评审应该将重点放在确定其他问题上。协调人经常需要施加相当大的影响，来确保评审会议侧重于这个方向。
</p>
<h3>
    <a id="TakingActionOnResults" name="TakingActionOnResults">对评审结果采取行动</a>
</h3>
<p>
    如果不对评审结果采取行动，那么评审就没有什么价值。评审结束时：
</p>
<ul>
    <li>
        确定问题列表的优先顺序。
    </li>
    <li>
        创建缺陷，以跟踪问题及其解决办法。
    </li>
    <li>
        如果需要进行其他调查，将调查问题（而不是解决问题）的任务分配给一个小团队。
    </li>
    <li>
        对于可以在当前迭代中解决的问题，指派一个人或一个团队来解决。
    </li>
    <li>
        将未解决问题的列表留待将来的迭代计划工作中解决。
    </li>
</ul>
<h3>
    <a id="MoreInfo" name="MoreInfo">更多信息</a>
</h3>
<p>
    另请参阅 [<a class="elementLinkWithUserText" href="./../../../rup/customcategories/references_56F06DFD.html#MCO97" guid="7.755968586980351E-308">MCO97</a>]。
</p><br />
<br /></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
